package io.itit.ecp.admin.server.mapper;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import icu.mhb.mybatisplus.plugln.base.mapper.JoinBaseMapper;
import io.itit.ecp.admin.server.entity.EnergyDataEntity;
import io.itit.ecp.admin.server.entity.extend.EnergyDataExtEntity;
import io.itit.grass.common.server.dto.ParamDto;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * <p>
 *
 * @Author：Roy
 * @Description：能源数据模型类
 * @Date：Create by 2023-12-05 11:48:22
 */
public interface EnergyDataMapper extends JoinBaseMapper<EnergyDataEntity> {

    EnergyDataExtEntity sum(@Param("dto") ParamDto dto);

    EnergyDataExtEntity sumMeterValue(@Param("dto") ParamDto dto);

    EnergyDataExtEntity sumCarbonEmission(@Param("dto") ParamDto dto);

    List<EnergyDataExtEntity> sumGroupScene(@Param("dto") ParamDto dto);

    List<EnergyDataExtEntity> sumGroupEnergyType(@Param("dto") ParamDto dto);
    List<EnergyDataExtEntity> sumGroupEnergyTypeAndScene(@Param("dto") ParamDto dto);
    List<EnergyDataExtEntity> sumGroupReadMeterTypeAndScene(@Param("dto") ParamDto dto);

    List<EnergyDataExtEntity> sumGroupSolidifyDate(@Param("dto") ParamDto dto);

    List<EnergyDataExtEntity> sumGroupSolidifyDateAndEnergyType(@Param("dto") ParamDto dto);

    List<EnergyDataExtEntity> sumGroupSolidifyDateAndReadMeterType(@Param("dto") ParamDto dto);

    List<EnergyDataExtEntity> sumGroupReadMeterType(@Param("dto") ParamDto dto);
    /**
     * 设备计量统计
     */
    IPage<EnergyDataExtEntity> deviceMeterStatistics(@Param("dto") ParamDto dto, Page<EnergyDataExtEntity> page);
    List<EnergyDataExtEntity> deviceMeterStatistics(@Param("dto") ParamDto dto);


    /**
     * 公司计量统计
     */
    IPage<EnergyDataExtEntity> companyMeterStatistics(@Param("dto") ParamDto dto, Page<EnergyDataExtEntity> page);
    List<EnergyDataExtEntity> companyMeterStatistics(@Param("dto") ParamDto dto);

    /**
     * 项目计量统计
     */
    IPage<EnergyDataExtEntity> projectMeterStatistics(@Param("dto") ParamDto dto, Page<EnergyDataExtEntity> page);
    List<EnergyDataExtEntity> projectMeterStatistics(@Param("dto") ParamDto dto);

}
